#define _CRT_SECURE_NO_WARNINGS 1

//#include <iostream>
//using namespace std;
//
//int main() {
//    int n;
//    cin >> n;
//    int prev = 1;
//    int front = 2;
//    int res = 0;
//
//    while (n < prev || n > front)
//    {
//        if (n == prev || n == front)
//        {
//            cout << res;
//            return 0;
//        }
//
//        int tmp = front;
//        front = prev + front;
//        prev = tmp;
//
//
//    }
//
//    res = (n - prev) < (front - n) ? (n - prev) : (front - n);
//    cout << res;
//    return 0;
//}

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<vector<int>> table(n + 1, vector<int>(n + 1, 0));

    int i = 0;
    int j = 0;
    for (i = 1; i < n + 1; i++)
    {
        for (j = 1; j <= i; j++)
        {
            if (i == 1 && j == 1)
            {
                table[i][j] = 1;
            }
            else
            {
                table[i][j] = table[i][j - 1] + table[i - 1][j];

            }

        }
    }

    for (i = 1; i < n + 1; i++)
    {
        for (j = 1; j <= i; j++)
        {
            printf("%d ", table[i][j]);
        }
        printf("\n");
    }


}